home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 001-100 / 001-025 / 024 / modula-2 / m2 / spritedemo.mod < prev    next >
Text File  |  1995-03-17  |  2KB  |  69 lines

  1. (********************************************************************************
  2.  
  3. Name         : SpriteDemo.MOD
  4. Version      : 1.0
  5. Purpose      : Demo for Hardware Sprites
  6. Author       : ms
  7. Modified     : 2.4.86  15:35  ms
  8.  
  9. ********************************************************************************)
  10.  
  11. MODULE SpriteDemo;
  12.  
  13. FROM SYSTEM        IMPORT LONG, ADR, ADDRESS;
  14. FROM SimpleSprites IMPORT SpriteImage, SimpleSprite,
  15.                           GetSprite, ChangeSprite, MoveSprite, FreeSprite;
  16. FROM Terminal      IMPORT WriteString, WriteLn, Read;
  17.  
  18. VAR sp: SimpleSprite;
  19.     si: SpriteImage;
  20.     ch: CHAR;
  21.  
  22. BEGIN
  23.   (* init Sprite's Image *)
  24.   si.posctl[0]:=0; si.posctl[1]:=0;
  25.   si.data[ 0]:=LONG(00000H, 0FFFFH);
  26.   si.data[ 1]:=LONG(00000H, 0C003H);
  27.   si.data[ 2]:=LONG(00180H, 0C003H);
  28.   si.data[ 3]:=LONG(00180H, 0C003H);
  29.   si.data[ 4]:=LONG(00180H, 0C003H);
  30.   si.data[ 5]:=LONG(00180H, 0C003H);
  31.   si.data[ 6]:=LONG(03FFCH, 0C003H);
  32.   si.data[ 7]:=LONG(03FFCH, 0C003H);
  33.   si.data[ 8]:=LONG(03FFCH, 0C003H);
  34.   si.data[ 9]:=LONG(00180H, 0C003H);
  35.   si.data[10]:=LONG(00180H, 0C003H);
  36.   si.data[11]:=LONG(00180H, 0C003H);
  37.   si.data[12]:=LONG(00180H, 0C003H);
  38.   si.data[13]:=LONG(00000H, 0C003H);
  39.   si.data[14]:=LONG(00000H, 0C003H);
  40.   si.data[15]:=LONG(00000H, 0FFFFH);
  41.  
  42.   si.data[16]:=LONG(0FFFFH, 0FFFFH);
  43.  
  44.   IF GetSprite(sp, 1)#-1D THEN
  45.     sp.x:=160; sp.y:=100; sp.height:=16;
  46.     ChangeSprite(NIL, sp, si);
  47.     WriteString('SpriteDemo'); WriteLn;
  48.     WriteString('=========='); WriteLn; WriteLn;
  49.     WriteString('use numerical keys to move the sprite, esc to exit'); WriteLn;
  50.     LOOP
  51.       Read(ch);
  52.       IF    ch=33C THEN EXIT
  53.       ELSIF ch='1' THEN MoveSprite(NIL, sp, sp.x-1, sp.y+1)
  54.       ELSIF ch='2' THEN MoveSprite(NIL, sp, sp.x, sp.y+2)
  55.       ELSIF ch='3' THEN MoveSprite(NIL, sp, sp.x+1, sp.y+1)
  56.       ELSIF ch='4' THEN MoveSprite(NIL, sp, sp.x-2, sp.y)
  57.       ELSIF ch='6' THEN MoveSprite(NIL, sp, sp.x+2, sp.y)
  58.       ELSIF ch='7' THEN MoveSprite(NIL, sp, sp.x-1, sp.y-1)
  59.       ELSIF ch='8' THEN MoveSprite(NIL, sp, sp.x, sp.y-2)
  60.       ELSIF ch='9' THEN MoveSprite(NIL, sp, sp.x+1, sp.y-1)
  61.       ELSE
  62.       END;
  63.     END;
  64.     FreeSprite(1);
  65.   ELSE
  66.     WriteString("couldn't get sprite"); WriteLn;
  67.   END
  68. END SpriteDemo.
  69.